/*
 * @Author: WuFeng <763467339@qq.com>
 * @Date: 2022-03-22 12:12:49
 * @LastEditTime: 2023-04-10 16:56:37
 * @LastEditors: WuFeng <763467339@qq.com>
 * @Description: 系统常量配置
 * @FilePath: \vue3-element-plus-web\src\config\index.js
 * @Copyright 版权声明
 */

/**
 * @const {String}
 * @desc 获取 location 或 URL 的 hostname 和 port 号码
 */
export const ENV_HOST = window.location.host

/**
 * @const {String}
 * @desc 获取 location 或 URL 的主机名称部分
 */
export const ENV_HOSTNAME = window.location.hostname

/**
 * @const {String}
 * @desc 缓存信息存储方式 ： COOKIE 、 SESSION_STORAGE
 */
export const CACHE_MODE = 'COOKIE'

/**
 * @enum {Int}
 * @desc 短信验证码初始时间/s
 */
export const SMS_VERIFICATION_CODE_TIMER = 60

/**
 * @enum {Object}
 * @desc 启用/禁用状态枚举
 */
export const ENABLED_STATE_ENUM = [
  {
    value: 1,
    label: '启用',
    type: 'success'
  },
  {
    value: 0,
    label: '停用',
    type: 'warning'
  }
]

/**
 * @enum {String}
 * @desc 系统默认 语言
 */
export const SYSTEM_DEFAULT_LANGUAGE = 'zh-cn'

/**
 * @enum {String}
 * @desc 系统默认 布局相关配置
 * mixedMenuLayout: 混合 菜单布局（左侧 + 顶部） **暂时未作**
 * leftMenuLayout: 左侧 菜单布局
 * topMenuLayout: 顶部 菜单布局
 */
export const SYSTEM_DEFAULT_LAYOUT = {
  /**
   * @enum {Boolean} true: 登陆后可手动切换至某个角色，拥有当前所选角色的权限 ， false： 登陆后拥有所拥有所有角色权限的并集
   * @desc 可切换多角色
   */
  roleSwitch: true,
  /**
   * @enum {String}
   * @desc 系统默认 布局类型
   * mixedMenuLayout: 混合 菜单布局（左侧 + 顶部），顶部展示一级，左侧展示非顶级之外的下级 **暂时未作**
   * leftMenuLayout: 左侧 菜单布局
   * topMenuLayout: 顶部 菜单布局
   */
  layoutType: 'topMenuLayout',
  // 是否展示多主题切换
  multilTheme: true,
  /**
   * @description 系统主题 - 列表
   * defaultTheme: 默认主题
   * nightTheme: 夜间模式
   */
  themeEnum: [
    {
      label: '默认主题',
      value: 'defaultTheme'
    },
    {
      label: '夜间模式',
      value: 'nightTheme'
    }
  ],
  /**
   * @description 系统主题
   * defaultTheme: 默认主题
   * nightTheme: 夜间模式
   */
  defaultTheme: 'defaultTheme',
  // 是否展示多语言切换
  multilLanguage: true
}

/**
 * @enum {Object}
 * @desc 全局分页配置
 */
export const PAGINATION_MAP = {
  // 每页显示条目个数，支持 v-model 双向绑定
  pageSize: 10,
  // 	每页显示个数选择器的选项设置
  pageSizes: [10, 20, 30, 50, 100],
  // 设置最大页码按钮数。 页码按钮的数量，当总页数超过该值时会折叠
  pagerCount: 5,
  // 是否使用小型分页样式
  small: false,
  // 是否禁用分页
  disabled: false,
  // 是否为分页按钮添加背景色
  background: true,
  // 	组件布局，子组件名用逗号分隔
  // layout: 'total, sizes, prev, pager, next, jumper',
  layout: 'total, prev, pager, next, jumper',
  // 只有一页时是否隐藏
  hideOnSinglePage: true,
  // 每页显示个数选择器的下拉框类名
  popperClass: '',
  // 替代图标显示的上一页文字
  prevText: '',
  // 替代图标显示的下一页文字
  nextText: ''
}

/**
 * @enum {String}
 * @desc aes 加密 密钥
 */
export const AES_KEY = 'sDPrA288n6Qqivz0Jew093T8cthuhbEZ'

/**
 * @enum {String}
 * @desc 是否对http出入参进行加解密， true ：加密、 false ：不加密
 * 如果 配置为false， 则 拦截器中配置的headers['API-CRYPTO']将不起作用
 */
export const HTTP_API_CRYPTO = (process.env.VUE_APP_HTTP_API_CRYPTO === 'true')

/**
 * @enum {String}
 * @desc 接口放行的文件扩展名枚举
 */
export const HTTP_API_PASS_FILE_ENUM = [
  '.html',
  '.css',
  '.zz',
  '.js',
  '.png',
  '.jpg',
  '.otf',
  '.eot',
  '.svg',
  '.ttf',
  '.woff',
  '.gif',
  '.ico',
  '.txt',
  '.gzip',
  '.xz',
  '.tar.gz',
  '.tar.bz2',
  '.jar',
  '.war',
  '.7z',
  '.tgz',
  '.gz',
  '.map'
]
